package com.dc.designPattern._2_factory.extend.extend1;

import java.lang.reflect.Constructor;

/**
 * Description: 简单工厂方法_工厂类 （通过工厂方法模式，实现单例模式功能）
 *
 * @author: gdc
 * @date: 2021/6/21
 * @version 1.0
 */
public class SingletonFactory {

    /**
     * 单例类实例
     */
    private static Singleton singleton;

    static {
        try {
            Class<?> clazz = Class.forName(Singleton.class.getName());

            // 获取无参的构造函数
            Constructor<?> constructor = clazz.getDeclaredConstructor();
            // 设置无参构造函数是可以访问的
            constructor.setAccessible(true);

            // 产生一个实例对象
            singleton = (Singleton) constructor.newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取实例
     */
    public static Singleton getInstance(){
        return singleton;
    }
}
